// 封装axios 请求 框架 , 专门发送axios请求,
import axios from 'axios';
//导入element框架的提示框的组件
import {MessageBox, Message} from 'element-ui'
//导入Vuex
import store from '@/store'
//导入获取Token的函数 , 来获取Token
import {getToken} from '@/utils/auth'


export function request2(config) {
//    1 : 创建一个axios实例
  const instance = axios.create({
    // 请求的url
    baseURL: 'http://localhost:8080',
    timeout: 5000
  })
  // 请求拦截器 , 可以在请求发送之前,  做一些操作
  instance.interceptors.request.use(config => {
    //指定每一个请求上面 , 都要带有Token信息
    if (store.getters.token) {
      config.headers['Authorization'] = 'Bearer ' + getToken()
    }
    return config
  }, error => {
    console.log("请求发送失败");
    //请求发送失败的错误
    return Promise.reject(error)
  })
  // 响应拦截器 , 可以在响应来到的第一处理
  instance.interceptors.response.use(responce => {
      //获取响应的具体的数据
      const res = responce.data;

      //如果自定义的状态码 , 不是2000 , 哪将标记为错误
      if (res.code !== 2000) {
        Message({
          message: res.message || 'Error',
          type: 'error',
          duration: 5 * 1000
        })
        return Promise.reject(new Error(res.message || 'Error'))
      } else {
        // 成功获取响应内容
        return res
      }
    },
    error => {
      //错误的响应 , 打印 , 错误信息 , 并将错误 , 返回出去
      Message({
        message: error.message,
        type: 'error',
        duration: 5 * 1000
      })
      return Promise.reject(error)
    }
  )
// 3 : 发送正在的网络请求
  return instance(config)
}
